﻿package  
{
	import flash.display.MovieClip;
	import flash.events.KeyboardEvent;
	import flash.ui.Keyboard;
	/**
	 * ...
	 * @author Ivan Lucas & Danilo
	 */
	public class Fragata extends MovieClip
	{
		/*-----------------------------------------variaveis------------------------------------------------*/
		
			var BO_DirP1					:Boolean;	// Mover a fragata do player 1 para a direita
			var BO_EsqP1					:Boolean;	// Mover a fragata do player 1 para a esquerda
			var BO_AngUpP1					:Boolean;	// Aumenta o angulo dos canhoes do player 1
			var BO_AngDownP1				:Boolean;	// Dimunui o angulo dos canhoes do player 1
			var BO_AtirarP1					:Boolean;	// Atira os canhões do player 1
			var NU_aceleracao				:Number = 0.007;	//	Velocidade de aceleracao das Fragatas
			var NU_velocidade				:Number = 0;	//	Velocidade de aceleracao das Fragatas
			var NU_velocidadeMax			:Number = 5;		// Velocidade maxima das Fragatas
			var NU_velocidadeMin 			:Number = -5;	//Velocidade minima das Fragatas
		  
			var MC_TiroFrig					:Tiro; //Tiro da fragata
			
			var delayTiro				:int = 10; // Delay que controla disparo do canhao para não atirar varias vezes
			
		/*-------------------------------------------------------------------------------------------------*/
		
		public function Fragata() 
		{
			this.stop();
			
			Main.pegarInstancia().stage.addEventListener(KeyboardEvent.KEY_DOWN, pressionar, false, 0, true)// Evento para pressionar os botoes 
			Main.pegarInstancia().stage.addEventListener(KeyboardEvent.KEY_UP, soltar, false, 0, true)// Evento que solta os botoes
			
			
		}
		
		
		public function update():void //funcao update lida pelo Event Listener update da classe level
		{
			this.x += NU_velocidade;
			
				delayTiro--;
			
			if (this.NU_velocidade >= NU_velocidadeMax)
			{
				NU_velocidade = NU_velocidadeMax;
			}
			else
				if (this.NU_velocidade <= NU_velocidadeMin)
					 NU_velocidade = NU_velocidadeMin;
			
			
			
			
			moverFragatas();//funcao usada para mover as fragatas usando os listeners KEY_DOWN e UP
			limitarTela();// funcao usada para limitar as fragatas na tela usando o tamanho total da tela como referencia
			
			
		}
		
		private function limitarTela():void //Serve para manter o navio na tela dos 2 lados
		{
			if (this.x - (this.width/2)  <= 0)
			{
				this.x = (this.width/2);
			}
			else
				if ( this.x + (this.width/2) >= Main.pegarInstancia().stage.stageWidth)
				{
					this.x = Main.pegarInstancia().stage.stageWidth - (this.width/2);
				}
		}
		
		// Torna as bolleanas de movimentação do navio para true quando pressionadas
		private function pressionar(e:KeyboardEvent):void 
		{
			
			switch(e.keyCode)
			{
				case Keyboard.RIGHT:
				BO_DirP1 = true;
				break;
				
				case Keyboard.LEFT:
				BO_EsqP1 = true;
				break;
				
				case Keyboard.UP:
				BO_AngUpP1 = true;
				break;
				
				case Keyboard.DOWN:
				BO_AngDownP1 = true;
				break;
				
			case Keyboard.SPACE:
					if (!BO_AtirarP1)
						BO_AtirarP1 = true;
				
				break;
			}
		}
		
		private function soltar(e:KeyboardEvent):void 
		{
			switch(e.keyCode)
			{
				case Keyboard.RIGHT:
				BO_DirP1 = false;
				break;
				
				case Keyboard.LEFT:
				BO_EsqP1 = false;
				break;
				
				case Keyboard.UP:
				BO_AngUpP1 = false;
				break;
				
				case Keyboard.DOWN:
				BO_AngDownP1 = false;
				break;
				
				case Keyboard.SPACE:
				BO_AtirarP1 = false;
				break;
			} 
		}
		
// Torna as bolleanas de movimentação do navio para true quando pressionadas
		private function moverFragatas():void 
		{
			
			if (BO_DirP1 == true)
			{
				NU_velocidade += NU_aceleracao;
				
			}
			
			if (BO_EsqP1 == true)
			{
				NU_velocidade -= NU_aceleracao;
				
			}
			
			if (BO_AngUpP1 == true)
			{
				canhao.rotation -= 0.5;
				
				
				if (canhao.rotation <= -90)
				{
					canhao.rotation = -90;
				}
				
			}
			
			if (BO_AngDownP1 == true)
			{
				canhao.rotation += 0.5;
				
				if (canhao.rotation >= 0)
				{
					canhao.rotation = 0;
				}
				
			}
			
			
			if (BO_AtirarP1 == true)
			{
				delayTiro--;
				if (delayTiro <= 0)
				{
					atirar();
					delayTiro = 30;
				}
				
				
			}
			
			
		}
		
		public function atirar():void 
		{
			MC_TiroFrig = new Tiro()
			MC_TiroFrig.x = canhao.x;
			MC_TiroFrig.y = canhao.y;
			addChild(MC_TiroFrig);
			Tiro.AR_tiro.push(MC_TiroFrig);
		}
		
	}

}